ตั้งค่า Nginx เป็น Proxy Server สำหรับ API บน Docker, NodeJS, Python และอื่นๆ
Published in:2024-03-10 | Categories: Linux Tutorial

เตรียมความพร้อม

ในบทความนี้ต้องการ Nginx Web Server ที่ทำการติดตั้งเรียบร้อยแล้ว หากยังไม่มีสามารถดูวิธีติดตั้งได้ ที่นี่

ติดตั้ง Nginx web server

1. เปิดไฟล์ config ของ domain ที่ต้องการและแก้ไขในส่วนของ server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server {
#root /var/www/test.sugoidev.com; #path ที่เก็บไฟล์เว็บ ให้ comment หรือลบทิ้งเพราะไม่ได้ใช้
server_name test.sugoidev.com; #ชื่อ domain
location / {
#try_files $uri $uri/ /index.html; #ให้ comment หรือลบทิ้งเพราะไม่ได้ใช้
proxy_pass http://127.0.0.1:3000; #http ที่อยู่ API หรือ service ที่ต้องการเชื่อมต่อ
proxy_request_buffering off;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
client_max_body_size 0;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
}

# ด้านล่างหากมี # managed by Certbot ไม่ต้องแก้ไขให้ทิ้งไว้แบบเดิม
}

2. ทดสอบ config nginx ว่าถูกต้องหรือไม่โดยใช้คำสั่งด้านล่าง

1
$ sudo nginx -t

3. ทำการ restart nginx โดยใช้สำสั่งด้านล่าง

1
$ sudo /etc/init.d/nginx restart

ทดสอบการทำงานโดยใช้ NodeJS express http server

4. ติดตั้ง NodeJS ด้วยคำสั่งด้านล่าง

1
$ sudo apt-get install nodejs npm -y

5. สร้าง directory และติดตั้ง library สำหรับ hello world บน NodeJS express

1
$ mkdir helloworld && cd helloworld && npm init --yes && npm install express

6. สร้างไฟล์ index.js โดยใช้ code ด้านล่าง

1
2
3
4
5
6
7
8
9
10
11
const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
res.send('Hello World!')
})

app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})

4. รัน express hello world API ด้วยคำสั่งด้านล่าง

1
$ node index.js

4. ทดสอบหน้าเว็บโดยเปิดเว็บผ่าน web browser หากทุกอย่างถูกต้องจะพบหน้า API หรือ service ที่เราต้องการ

Prev:
ตั้งค่า Nginx ให้แสดงรายชื่อไฟล์ทั้งหมดใน Directory เพื่อ Download
Next:
วิธีติดตั้ง Nginx HTTPS Web Server พร้อม Free SSL บน Linux